记一个mybatis 您所在的位置:网站首页 mybatisplus 返回主键 记一个mybatis

记一个mybatis

2024-01-24 03:21| 来源: 网络整理| 查看: 265

虽然是小坑,但坑起来要人命

主键返回配置

参考教程

在插入语句里面有一些额外的属性和子元素用来处理主键的生成,并且提供了多种生成方式。首先,如果你的数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),那么你可以设置 useGeneratedKeys=”true”,然后再把 keyProperty 设置为目标属性就 OK 了。例如,如果上面的 Author 表已经在 id 列上使用了自动生成,那么语句可以修改为:

insert into Author (username,password,email,bio) values (#{username},#{password},#{email},#{bio})

如果你的数据库还支持多行插入, 你也可以传入一个 Author 数组或集合,并返回自动生成的主键。

insert into Author (username, password, email, bio) values (#{item.username}, #{item.password}, #{item.email}, #{item.bio}) 坑来了

本人用的PostgreSQL,是支持自增主键的,但无论如何,返回的都是1,我的操作如下:

// XxxMapper.java public interface XxxMapper extends BaseMapper { int insertXxx(Xxx xxx); } // XxxServiceImpl.java @Service public class XxxServiceImpl extends ServiceImpl implements IXxxService { @Resource private XxxMapper xxxMapper; @Override public void insertXxx(Xxx xxx) { int xxxId = xxxMapper.insertXxx(xxx); } }

就这,我在网上找了半天。。老司机们可能都看笑了,这不。。错得很明显嘛

然而本菜鸟被下了降头,就是找不到原因。

百度出来的全是跟上一节一样,基本配置CV了一遍又一遍,一群¥%#*&E…%,这个要你教?教程抄起来就那么有意思?

After two hours…

破案了:

没错,对,配置没错,insert没错,返回没错,主键也没错。。

主键已经在Entity对象里了,也就是说,上述代码中的xxxId取的不是它返回的id,还是那个影响行数,返回的主键ID它已经给你放到你的入参对象里了。。

xxxMapper.insertXxx(xxx); int xxxId = xxx.getId();

瞧,简单直白。。还得夸它干得不错,很人性化。。

我第一次也是这么认为的。。

第一次?

嗯。。这是第二次

第一次没中降头,自己想明白了,还颇为赞叹得告知同事。。

中间半个月去干其它事了,就没想起来

还是请教同事后他给我破的案,你之前不是还告诉我XXXXXXX嘛?(o´・ェ・`o)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有